package com.aaa.sys.service.impl;

import cn.hutool.core.util.StrUtil;
import com.aaa.sys.entity.TabRoleMenu;
import com.aaa.sys.dao.TabRoleMenuDao;
import com.aaa.sys.service.TabRoleMenuService;
/**
import org.springframework.stereotype.Service;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
*/
import com.aaa.util.SqlSessionFactoryUtil;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import javax.annotation.Resource;
import java.util.List;

/**
 * (TabRoleMenu)表服务实现类
 *
 * @author makejava
 * @since 2023-04-25 11:16:05
 */
//@Service("tabRoleMenuService")
public class TabRoleMenuServiceImpl implements TabRoleMenuService {
/**
    @Resource
    private TabRoleMenuDao tabRoleMenuDao;
*/
    SqlSessionFactory sqlSessionFactory= SqlSessionFactoryUtil.getSqlSessionFactory();
    SqlSession session = sqlSessionFactory.openSession();
    TabRoleMenuDao tabRoleMenuDao= session.getMapper(TabRoleMenuDao.class);

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    @Override
    public TabRoleMenu queryById(Integer id) {
        return this.tabRoleMenuDao.queryById(id);
    }

    /**
     * 分页查询
     *
     * @param tabRoleMenu 筛选条件
     * @param pageRequest      分页对象
     * @return 查询结果
     */
     /**
    @Override
    public Page<TabRoleMenu> queryByPage(TabRoleMenu tabRoleMenu, PageRequest pageRequest) {
        long total = this.tabRoleMenuDao.count(tabRoleMenu);
        return new PageImpl<>(this.tabRoleMenuDao.queryAllByLimit(tabRoleMenu, pageRequest), pageRequest, total);
    }*/

    /**
     * 新增数据
     *
     * @param tabRoleMenu 实例对象
     * @return 实例对象
     */
    @Override
    public TabRoleMenu insert(TabRoleMenu tabRoleMenu) {
        this.tabRoleMenuDao.insert(tabRoleMenu);
        return tabRoleMenu;
    }

    /**
     * 修改数据
     *
     * @param tabRoleMenu 实例对象
     * @return 实例对象
     */
    @Override
    public TabRoleMenu update(TabRoleMenu tabRoleMenu) {
        this.tabRoleMenuDao.update(tabRoleMenu);
        return this.queryById(tabRoleMenu.getId());
    }

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    @Override
    public boolean deleteById(Integer id) {
        return this.tabRoleMenuDao.deleteById(id) > 0;
    }

    @Override
    public List<Integer> getMidByRid(String rid) {
        return this.tabRoleMenuDao.queryMidsByRid(rid);
    }

    @Override
    public boolean updTabRoleMenu(String rid, String mids) {
        // id 有  mids 有
        // 删除 一下这个角色之前拥有的权限
        try {
            int i = tabRoleMenuDao.deleteByRoleId(rid);

//            System.out.println(1 / 0);
            // 添加
            if (!StrUtil.isEmptyIfStr(mids)) {
                String[] split = mids.split(",");
                int j = tabRoleMenuDao.addTabRoleMenu(rid, split);
            }
            session.commit();// 提交事务
        }catch (Exception e){
            session.rollback();// 回滚
            e.printStackTrace();
        }

        return true;
    }
}
